iT邦幫忙

DAY 5
3

JavaScript 三十參系列 第 5

JavaScript 三十參(5):遺漏「var」的副作用

  • 分享至 

  • xImage
  •  

參與iT邦JavaScript中忍比賽,獲得一本JS武林祕級“JavaScript設計模式”,因而閉門修練月餘,今神功既成故節錄三十片段,以饗邦友。


隱含的全域變數和明確定義的全域變數之間的差別是能否用“delete”將變數刪除。

規則如下:
(1)用var創造出的全域變數不可以刪除
(2)不使用var隱含創造出的全域變數可以刪除

這個意思是:

隱含的全域變數在技術上來說,並不是真的變數,而是全域物作的“屬性”。
屬性可用“delete”來刪除,但真的變數不行。

讓我們看一下範例會比較清楚。

//定義三個全域變數
var global_var = 1;
global_novar = 2;

//立即函數,亦即只運行一次
(function(){
	global_fromfunc = 3;
}());


//試著刪除
delete global_var;
delete global_novar;
delete global_fromfunc;


//刪除之後
console.log(typeof(global_var));	//number
console.log(typeof(global_novar));	//undefined
console.log(typeof(global_fromfunc));	//undefined

由以上可知「var」千萬不可以“不小心”就漏了哦~~~

待續.....

JavaScript 三十參(總整理)


上一篇
JavaScript 三十參(4):撰寫可維護的程式碼
下一篇
JavaScript 三十參(6):單一「var」模式
系列文
JavaScript 三十參30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
總裁
iT邦好手 1 級 ‧ 2012-10-13 14:40:15

var 泰大="TOO BIG"
泰大="too too big"
console.log(typeof(泰大));.....??疑惑

ted99tw iT邦高手 1 級 ‧ 2012-10-13 15:18:57 檢舉
<pre class="c" name="code">
var t = "Ted";
t = "CDFU";

console.log(typeof(t)); // string
console.log(t);         // CDFU
delete (t);
console.log(typeof(t)); // string
console.log(t);         // CDFU

delete之後變數t與值仍存在是因為 t 為經 「var」宣告的,就算消也消不掉。

我要留言

立即登入留言